#ifndef __BOARD_CONFIG_H__
#define __BOARD_CONFIG_H__

#include "gd32f4xx.h"

/* 串口，对外连接，连接切换模块，连接净化模块，连接铷钟，连接显示屏 */

#define COMn                             1U

typedef enum {
    SYS_COM_DEBUG = 0,
    SYS_COM_DEBUG2,
    SYS_COM_MAX,
} SYS_COM_ENUM_T;

typedef struct {
    uint32_t com;               // 串口号
    uint32_t gpio_clk;          // GPIO时钟
    uint32_t usart_clk;         // USART时钟
    uint32_t gpio_port;         // GPIO端口
    uint32_t tx_pin;            // 发送引脚
    uint32_t rx_pin;            // 接收引脚
    uint32_t af;                // 复用功能
    uint32_t baudrate;          // 波特率
    IRQn_Type irq;
} BOARD_COM_CONFIG_T;

void board_uart_init(void);

typedef struct {
    rcu_periph_enum gpio_clk;  // GPIO 时钟
    uint32_t gpio_port;        // GPIO 端口
    uint32_t gpio_pin;         // GPIO 引脚
} BOARD_LED_CONFIG_T;

void board_led_init(void);

void board_sys_led_toggle(void);

void board_adc_init(void);

void read_adc_value(void);

void transmit_com_data(uint8_t *data, int32_t data_len);

void transmit_image_upgrade_command(uint32_t id);

#endif
